package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import util.enviaEmail;
import bean.clienteBean;
import conexao.Conexao;
import dao.clienteDao;

public class alterarClienteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
    public alterarClienteServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");
		
		PrintWriter out = response.getWriter();
		
		Connection conn = null;
		try {
			conn = new Conexao().getConexao();
		} catch (SQLException e) {
			new enviaEmail().enviar(e);
			out.print("falhaConexao");
			return;
		}
		
		if (request.getParameter("alteraNome") == "") {
			out.println("O nome não pode ser vazio.");
		}else if (request.getParameter("alteraCPF") == "" && request.getParameter("alteraCNPJ") == "") {
			out.println("Por favor informe um CPF ou CNPJ.");
		}else if(request.getParameter("alteraCPF") != "" && request.getParameter("alteraCNPJ") != ""){
			out.println("Não pode cadastrar ao mesmo tempo CPF e CNPJ.");
		}else {
		
		Integer id = Integer.parseInt(request.getParameter("alteraIdCliente"));
		String nome = request.getParameter("alteraNome");	
		
		String cpf = "";
		String cnpj = "";
		Integer numero = 0;
		
		if(request.getParameter("alteraCPF") != "" && request.getParameter("alteraCNPJ") == ""){
			cpf = request.getParameter("alteraCPF");	
		}else{
			cnpj = request.getParameter("alteraCNPJ");
		}
		
		String endereco = request.getParameter("alteraEndereco");		
		if(request.getParameter("alteraNumero") != ""){
			numero = Integer.parseInt(request.getParameter("alteraNumero"));	
		}
		String bairro = request.getParameter("alteraBairro");	
		Integer idCidade = Integer.parseInt(request.getParameter("selCidade"));	
		String telefone = request.getParameter("alteraTelefone");	
		String celular = request.getParameter("alteraCelular");	
		Integer idFuncionario = Integer.parseInt(request.getParameter("idFuncionario"));
		String situacao = "ativo";
			
			clienteBean cliente = new clienteBean();
			cliente.setId(id);
			cliente.setNome(nome);
			cliente.setCpf(cpf);
			cliente.setCnpj(cnpj);
			cliente.setEndereco(endereco);
			cliente.setNumero(numero);
			cliente.setBairro(bairro);
			cliente.setIdCidade(idCidade);
			cliente.setTelefone(telefone);
			cliente.setCelular(celular);
			cliente.setIdFuncionario(idFuncionario);
			cliente.setSituacao(situacao);

			try {

				new clienteDao().alterar(conn, cliente);
				conn.commit();

			} catch (Exception e) {
				try {
					conn.rollback();
				} catch (Exception ex) {
					new enviaEmail().enviar(ex);
					ex.printStackTrace();
				}
				new enviaEmail().enviar(e);
				throw new RuntimeException(e);
			} finally {
				try {
					conn.close();
				} catch (Exception ex) {
					new enviaEmail().enviar(ex);
				}
			}
		}
		
	}

}
